#include<iostream>
#include<cstring>
using namespace std;
const int N = 100010;
int dp[N];
int n;
int a[N];
int  dfs(int x)
{
    if (dp[x]!=-1)return dp[x];
    int sum = 1;
    for(int j=1;j<x;j++)
    {
        if((a[x]&a[j])!=0)
        {
        sum=max(sum,dfs(j)+1);
        }
    }
    
    
     dp[x]=sum;
    return sum;
}
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    memset(dp,-1,sizeof(dp));
    int res=1;
for(int wei=2;wei<=n;wei++)
{
    res=max(res,dfs(wei));
}
cout<<res;
    return 0;
}